System.Collections.ObjectModel.ObservableCollection<T> – třída
Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.
Třída ObservableCollection<T> představuje dynamickou kolekci dat, která poskytuje oznámení při přidání nebo odebrání položek nebo při aktualizaci celého seznamu.
V mnoha případech jsou data, se kterými pracujete, kolekcí objektů. Běžným scénářem datové vazby je například použití ItemsControlListBoxtypu , ListViewnebo TreeView zobrazení kolekce záznamů.
Můžete vytvořit výčet všech kolekcí, které implementují rozhraní IEnumerable. Pokud ale chcete nastavit dynamické vazby tak, aby vložení nebo odstranění v kolekci automaticky aktualizovalo uživatelské rozhraní, musí kolekce implementovat rozhraní INotifyCollectionChanged. Toto rozhraní zveřejňuje CollectionChanged událost, což je událost, která by měla být vyvolána při každé změně podkladové kolekce.
Třída ObservableCollection<T> je typ shromažďování dat, který implementuje INotifyCollectionChanged rozhraní.
Před implementací vlastní kolekce zvažte použití ObservableCollection<T> nebo některé ze stávajících tříd kolekcí, například List<T>, Collection<T>, BindingList<T> a dalších. Pokud máte pokročilý scénář a chcete implementovat vlastní kolekci, zvažte použití IList, která poskytuje ne generickou kolekci objektů, ke kterým lze individuálně přistupovat pomocí indexu. Implementace IList poskytuje nejlepší výkon s modulem datových vazeb.
Poznámka:
Aby bylo možné plně podporovat přenos hodnot dat ze zdrojových objektů vazby na cíle vazby, musí každý objekt v kolekci, který podporuje vlastnosti svázatelné, implementovat vhodný mechanismus oznámení o změně vlastnosti, jako INotifyPropertyChanged je rozhraní.
Další informace naleznete v tématu Vazby k kolekcím v přehledu datových vazeb.
Poznámky k použití XAML
ObservableCollection<T> lze použít jako element objektu XAML ve Windows Presentation Foundation (WPF) ve verzích 3.0 a 3.5. Využití má ale podstatná omezení.
ObservableCollection<T> musí být kořenový prvek, protože
x:TypeArguments
atribut, který se musí použít k určení omezeného typu obecného ObservableCollection<T> , je podporován pouze u elementu object pro kořenový prvek.Musíte deklarovat
x:Class
atribut (což znamená, že akce sestavení pro tento soubor XAML musí býtPage
nebo jiná akce sestavení, která kompiluje XAML).ObservableCollection<T> je v oboru názvů a sestavení, které nejsou původně namapovány na výchozí obor názvů XML. Musíte namapovat předponu pro obor názvů a sestavení a pak tuto předponu použít u značky elementu objektu pro ObservableCollection<T>.
Jednodušší způsob použití ObservableCollection<T> schopností z XAML v aplikaci je deklarovat vlastní ne generickou třídu kolekce, která je odvozena od ObservableCollection<T>a omezuje ji na určitý typ. Pak namapujte sestavení, které obsahuje tuto třídu, a odkazujte na něj jako objektový prvek v XAML.